package com;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;

public class ConfigAnalyzer2 {

    public static void main(String[] args) {

        String filePath = "D:\\data\\GONGDANG1.cz"; // 替换为你的文件路径
        List<String> lines = new ArrayList<>();
        // 模拟数据，实际应用中应从文件读取
        Map<String, String> configMap = new HashMap<>();

        int m = 1;
        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = br.readLine()) != null) {
                if(line.indexOf("=") > 0) {
                    String tmp = line.substring(line.indexOf("=") + 1);
                    String key = line.substring(0, line.indexOf("="));
//                    System.out.println(tmp);
                    configMap.put(key, tmp);
//                    lines.add(tmp);
                }
                m++;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 将 List 转换为数组
        String[] array = lines.toArray(new String[0]);



        // 这里只添加部分数据作为示例，实际应读取完整数据文件
//        configMap.put("Config1", "025040000401");
//        configMap.put("Config2", "025040000401");
        // ... 继续添加其他Config直到Config800

        // 分析配置
        analyzeConfigs(configMap);
    }

    public static void analyzeConfigs(Map<String, String> configMap) {
        // 统计每个料号出现的次数
        Map<String, Integer> materialCount = new HashMap<>();
        // 记录空盒的位置
        List<Integer> emptyConfigs = new ArrayList<>();

        for (int i = 1; i <= 800; i++) {
            String key = "Config" + i;
            String value = configMap.getOrDefault(key, "");

            if (value.isEmpty()) {
                emptyConfigs.add(i);
            } else {
                materialCount.put(value, materialCount.getOrDefault(value, 0) + 1);
            }
        }

        // 输出满盒的料号
        System.out.println("满盒的料号：");
        for (Map.Entry<String, Integer> entry : materialCount.entrySet()) {
            if (entry.getValue() == 50) {
                System.out.print(entry.getKey() + " ");
            }
        }
        System.out.println("\n");

        // 输出非满盒的料号及空位
        System.out.println("非满盒的料号及空位：");
        for (Map.Entry<String, Integer> entry : materialCount.entrySet()) {
            if (entry.getValue() > 0 && entry.getValue() < 50) {
                System.out.print(entry.getKey() + " ");
                // 计算空位数量
                int emptySlots = 50 - entry.getValue();
                for (int i = 0; i < emptySlots; i++) {
                    System.out.print("空 ");
                }
                System.out.println();
            }
        }
        System.out.println();

        // 输出空盒的位置
        System.out.println("空盒的位置：");
        for (int position : emptyConfigs) {
            System.out.print(position + " 空盒 ");
        }
        System.out.println();
    }
}
